home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 10
/
FM Towns Free Software Collection 10.iso
/
fb386
/
lib
/
vil310
/
demo
/
vdemo310.src
< prev
next >
Wrap
Text File
|
1995-02-20
|
47KB
|
1,100 lines
100 '--------------- VILローダファイル Ver3.10 ---------------
110 '-------------------- VIL組み込み開始 --------------------
120 CLEAR ,,512,FRE(4)-1024*128,0,0 'メモリ領域設定
130 SCREEN 0:CLS
140 VIL_W0%=0:VIL_W1%=0:VIL_W2%=0:VIL_W3%=0:VIL_W4%=0 '汎用ワーク変数
150 VIL_W5%=0:VIL_W6%=0:VIL_W7%=0:VIL_W8%=0:VIL_W9%=0
160 VIL_W0&=0:VIL_W1&=0:VIL_W2&=0:VIL_W3&=0:VIL_W4&=0 '汎用ワーク変数
170 VIL_W5&=0:VIL_W6&=0:VIL_W7&=0:VIL_W8&=0:VIL_W9&=0
180 VIL_W0$="":VIL_W1$="":VIL_W2$="":VIL_W3$=""
190 'ループ変数 長さ
200 VIL_I%=0:VIL_J%=0:VIL_K%=0:VIL_L%=0
210 '文字列汎用,ファイル名汎用,描画色 ,背景色(0..15)
220 VIL_A$="":VIL_F$="":VIL_C%=15:VIL_CB%=0:VIL_CC%=7
230 '左上隅・右下隅座標
240 VIL_X%=0:VIL_Y%=0:VIL_W%=0:VIL_Z%=0
250 'X・Y軸方向長さ ,個数
260 VIL_XL%=0:VIL_YL%=0:VIL_XN%=0:VIL_YN%=0
270 'パレット番号,入力番号,入力キー,アスキーコード,パッドコード
280 VIL_P%=0:VIL_KN%=0:VIL_K$="":VIL_KY%=0:VIL_PAD%=0
290 'マウス位置
300 VIL_MX%=0:VIL_MY%=0:VIL_MW%=0:VIL_MZ%=0
310 '
320 VIL_E%=0 'エラー番号
330 VIL_DIR$="" 'VILディレクトリ
340 VIL_APPCNF$="APPLI.CNF" 'アプリ設定ファイル名
350 DIM VIL_ENVNAM$(31),VIL_ENVVAL$(31) '環境変数 名前/値
360 VIL_ENVNUM%=0 '環境変数の数
370 VIL_VER%=310 'VIL VER3.10
380 '
390 *VIL_CNF '設定ファイル"VIL.CNF"読込
400 PRINT"Searching "+CHR$(34)+"VIL.CNF"+CHR$(34)
410 PRINT"Searching current directory"
420 GOSUB *VIL_ERR_ON:VIL_E%=0
430 OPEN "I",#1,"VIL.CNF" 'カレントディレクトリを探す
440 IF VIL_E%=63 THEN
450 PRINT"Searching root directory"
460 VIL_E%=0
470 OPEN "I",#1,"\VIL.CNF" 'ルートディレクトリを探す
480 IF VIL_E%=63 THEN '見つからなければ設定中止
490 PRINT"WARNING:"+CHR$(34)+"VIL.CNF"+CHR$(34)+" not found"
500 GOTO *VIL_L_BGN
510 ENDIF
520 ENDIF
530 PRINT"Reading "+CHR$(34)+"VIL.CNF"+CHR$(34)
540 '
550 ' 環境変数設定
560 WHILE EOF(1)=0
570 GOSUB *VIL_LNR
580 VIL_W0%=INSTR(VIL_W0$," "):VIL_W1%=VIL_W0% 'スペース開始
590 WHILE MID$(VIL_W0$,VIL_W1%,1)=" ":VIL_W1%=VIL_W1%+1:WEND
600 VIL_ENVNAM$(VIL_ENVNUM%)=LEFT$(VIL_W0$,VIL_W0%-1)
610 VIL_ENVVAL$(VIL_ENVNUM%)= MID$(VIL_W0$,VIL_W1%)
620 VIL_ENVNUM%=VIL_ENVNUM%+1
630 ' GOSUB *VIL_LNR
640 WEND
650 'FOR VIL_I%=0 TO VIL_ENVNUM%-1: PRINT VIL_I%;"|";VIL_ENVNAM$(VIL_I%);"|";VIL_ENVVAL$(VIL_I%);"|": NEXT':VIL_W0$=INPUT$(1) '*** デバッグ用
660 VIL_W0%=SEARCH(VIL_ENVNAM$,"VILDIR"): IF VIL_W0%>-1 THEN VIL_DIR$=VIL_ENVVAL$(VIL_W0%) 'VILディレクトリ設定
670 VIL_W0%=SEARCH(VIL_ENVNAM$,"APPLICNF"): IF VIL_W0%>-1 THEN VIL_APPCNF$=VIL_ENVVAL$(VIL_W0%)
680 CLOSE #1
690 '
700 *VIL_L_BGN ' VIL リンク開始
710 ON ERROR GOTO 0
720 *VIL_L_BAS: CHAIN MERGE VIL_DIR$+"VIL_BAS.BAS",*VIL_L_VWM,ALL,DELETE *VIL_L_BAS
730 *VIL_L_VWM: CHAIN MERGE VIL_DIR$+"VIL_VWM.BAS",*VIL_L_END,ALL,DELETE *VIL_L_VWM
740 *VIL_L_END ' VIL リンク終了
750 '
760 GOSUB *VIL_ERR_ON:GOSUB *VIL_DEFFN:GOTO *MAIN
770 '
780 *VIL_DEFFN
790 ' S$:文字列に変換 SS$:左にスペースを詰める S0$:左に0を詰める
800 ' P :正の整数 I :整数 R :実数
810 DEF FNVIL_P2S$(X&) =MID$(STR$(X&),2)
820 DEF FNVIL_P2SS$(X&,Y%) =RIGHT$(" "+STR$(X&),Y%)
830 DEF FNVIL_P2S0$(X&,Y%) =RIGHT$("0000000000"+MID$(STR$(X&),2),Y%)
840 DEF FNVIL_I2S$(X&) =MID$(STR$(X&),1-(X&>=0))
850 DEF FNVIL_I2SS$(X&,Y%) =RIGHT$(" "+STR$(X&),Y%)
860 '符号1桁(+-) + 00… + 数値
870 DEF FNVIL_I2S0$(X&,Y%) =MID$("+-",1-(X&<0),1) +RIGHT$("0000000000"+MID$(STR$(ABS(X&)),2) ,Y%-1)
880 DEF FNVIL_R2S$(X#) =MID$(STR$(X#),1-(X#>=0))
890 DEF FNVIL_R2SS$(X#,Y%,Z%)=RIGHT$(" "+STR$(FIX(X#)),Y%)+"." +MID$("0000000000"+STR$(X#)+"0000000000" ,INSTR("0000000000"+STR$(X#),".")+1,Z%)
900 DEF FNVIL_R2S0$(X#,Y%,Z%)=MID$("+-",1-(X#<0),1)+RIGHT$("0000000000" +MID$(STR$(FIX(ABS(X#))),2),Y%-1)+MID$("0000000000"+STR$(X#) +"0000000000",INSTR("0000000000"+STR$(X#),".")+1,Z%)
910 RETURN
920 '
930 'VIL汎用モジュール
940 '
950 *VIL_ERR_ON:ON ERROR GOTO *VIL_ERR:RETURN
960 '
970 *VIL_ERR:VIL_E%=ERR:RESUME NEXT
980 '*VIL_ERR:SCREEN 0:VIL_E%=ERR:PRINT "ERR";VIL_E%;"IN";ERL:BEEP:A$=INPUT$(1):IF A$=" " THEN ON ERROR GOTO 0 ELSE RESUME NEXT 'デバッグ用
990 '
1000 *VIL_CNFOP
1010 'VIL_APPCNF$ をオープン。正常終了時 VIL_E%=0
1020 VIL_E%=0
1030 OPEN "I",#1,VIL_APPCNF$
1040 RETURN
1050 '
1060 *VIL_CNFCL
1070 'VIL_APPCNF$ をクローズ。正常終了時 VIL_E%=0
1080 VIL_E%=0
1090 CLOSE #1
1100 RETURN
1110 '
1120 *VIL_CNFERR
1130 'VIL設定ファイル読み込み時のエラー処理(現バージョンでは強制終了)
1140 PRINT"CNFファイルに誤りがあります"
1150 PRINT"エラー行:";VIL_W0$
1160 STOP
1170 RETURN
1180 '
1190 *VIL_LNR
1200 '1行読み込み(空行・コメント行スキップ)
1210 LINE INPUT #1,VIL_W0$':SCREEN 0:PRINT VIL_W0$;"!"
1220 IF (VIL_W0$="" OR LEFT$(VIL_W0$,1)="'") AND EOF(1)=0 THEN *VIL_LNR
1230 RETURN
1240 '
1250 '-------------------- VIL組み込み終了 --------------------
20000 '
20010 '<<<<<<<<<<<<<<< Visual Interface Library Demo V3.10 >>>>>>>>>>>>>>>
20020 '
20030 *MAIN 'VILは最初にこのラベルを呼び出す
20040 '
20050 RANDOMIZE TIME:DEFINT A-Z
20060 '
20070 'SCREEN 1,0,3,1:VIEW(0,0)-(639,479):WINDOW(0,0)-(639,479)
20080 VIEW(0,0)-(639,479):WINDOW(0,0)-(639,479)
20090 PALETTE@:CLS
20100 PLAY OFF
20110 '
20120 '起動画面
20130 '
20140 SCREEN 0:CLS
20150 LINE(160,160)-(479,319),PSET,7,BF
20160 SYMBOL(224,168),"VIL",4,4,4
20170 SYMBOL(224,260),"Visual Interface Library",1,1,0
20180 SYMBOL(224,280)," Demonstration Program ",1,1,0
20190 '
20200 '<<<<<<<<<<<<<<<<<<<< VIL INITIALIZE >>>>>>>>>>>>>>>>>>>>
20210 '
20220 'VILパッケージ初期化
20230 '
20240 GOSUB *VIL_CNFOP
20250 '
20260 GOSUB *VIL_ENV_INITM
20270 '
20280 GOSUB *VIL_BEEP_INITM
20290 '
20300 VIL_W0&=1024*500\2 '画面退避(最大ウィンドウ総面積)
20310 VIL_W1%=20 '最大ウィンドウ番号
20320 GOSUB *VIL_WIN_INITM
20330 '
20340 GOSUB *VIL_VKEY_INITM
20350 '
20360 VIL_W0%=120 '最大メニュー番号
20370 VIL_W1%=256 '最大ボックス数
20380 VIL_W2%=10 '設定メニュー最大行数
20390 GOSUB *VIL_MSEL_INITM
20400 '
20410 VIL_W0%=2 'ヒストリ系列数
20420 GOSUB *VIL_INP_INITM
20430 '
20440 VIL_W0&=100000 '画像データバッファ要素数
20450 VIL_W1%=50 '画像データインデックス要素数
20460 VIL_W2&=100 'パレットデータバッファ要素数
20470 VIL_W3%=10 'パレットデータインデックス要素数
20480 GOSUB *VIL_MG_INITM
20490 '
20500 VIL_W0%=10 '最大ウィンドウ通し番号
20510 VIL_W1%=8 'ウィンドウ背景色用パレット番号
20520 VIL_W2%=0 '枠幅パターン数
20530 GOSUB *VIL_VWM_INITM
20540 '
20550 GOSUB *VIL_SBAR_INITM
20560 '
20570 GOSUB *VIL_SEL_INITM
20580 '
20590 IF VIL_E% THEN PRINT"VIL INIT ERROR!!":BEEP:STOP
20600 GOSUB *VIL_CNFCL
20610 '
20620 'アプリ環境ファイル読み込み
20630 '
20640 GOSUB *VIL_ENV_ROP
20650 GOSUB *VIL_BEEP_ENVR
20660 GOSUB *VIL_WIN_ENVR
20670 GOSUB *VIL_VKEY_ENVR
20680 GOSUB *VIL_MSEL_ENVR
20690 GOSUB *VIL_INP_ENVR
20700 GOSUB *VIL_MG_ENVR
20710 GOSUB *VIL_VWM_ENVR
20720 GOSUB *VIL_SBAR_ENVR
20730 GOSUB *VIL_SEL_ENVR
20740 GOSUB *VIL_ENV_RCL
20750 '
20760 '<<<<<<<<<<<<<<<<<<<< INIT >>>>>>>>>>>>>>>>>>>>
20770 DIM TXTBUF$(51)
20780 RESTORE *TXT_DATA:FOR I=0 TO 51:READ TXTBUF$(I):NEXT
20790 *TXT_DATA
20800 DATA " ~ スクロールバー ~ "
20810 DATA " このウィンドウは縦方向のスクロールバー"
20820 DATA "が付いています。 "
20830 DATA " 上スクロールスイッチ→┌┐"
20840 DATA " ├┤"
20850 DATA " リージョン────┬→││"
20860 DATA " │ ├┤"
20870 DATA " インジケータ────→││"
20880 DATA " │ ├┤"
20890 DATA " └→││"
20900 DATA " ├┤"
20910 DATA " 下スクロールスイッチ→└┘"
20920 DATA " 下スクロールスイッチをクリックすると、"
20930 DATA "この説明文の続きを読むことができます。最"
20940 DATA "初の方を読みたいときは、上スクロールスイ"
20950 DATA "ッチをクリックしてください。 "
20960 DATA " "
20970 DATA " インジケータは、説明文全体のうちどの部"
20980 DATA "分がウィンドウ内に表示されているかを示し"
20990 DATA "ています。このインジケータをドラッグする"
21000 DATA "ことで、任意の位置に一気に移動することが"
21010 DATA "できます。 "
21020 DATA " "
21030 DATA " スクロールスイッチをクリックすると表示"
21040 DATA "内容を一行ずつ進める/戻すことができます"
21050 DATA "が、インジケータ上下のリージョンをクリッ"
21060 DATA "クすると、一ページずつ進める/戻すことが"
21070 DATA "できます。 "
21080 DATA " "
21090 DATA " この後では横方向のスクロールバーも登場"
21100 DATA "しますが、操作方法は同様です。 "
21110 DATA ""
21120 DATA " この文章、ある程度長さがないとスクロー"
21130 DATA "ルバーの例になりませんので、以下余談を書"
21140 DATA "きます(^_^;)。なお、このウィンドウを抜け"
21150 DATA "るときは、クローズスイッチを押してくださ"
21160 DATA "い。"
21170 DATA ""
21180 DATA " このウィンドウマネージャ(WM)は一応"
21190 DATA "VILの標準WMとして設計しています。で"
21200 DATA "すから人によっては高機能すぎると思われる"
21210 DATA "かもしれませんが、使わない属性は指定しな"
21220 DATA "いようにすれば、アプリケーション側で対応"
21230 DATA "ルーチンを書く必要もありません。 "
21240 DATA ""
21250 DATA " 例えばRPGを作るのなら、全てのウィン"
21260 DATA "ドウで全属性OFFでも問題ないでしょう。"
21270 DATA "個人的には MOVE 属性ぐらいは対応すると、"
21280 DATA "コマンドウィンドウのレイアウトが自由にで"
21290 DATA "きて楽しいと思いますが……(妙に具体的な"
21300 DATA "例(^_^;)。フリコレ11にはなんとか(謎))。"
21310 DATA ""
21320 '
21330 DIM SHTMAP(63,7)
21340 RESTORE *SHTMAP_DATA
21350 FOR Y=0 TO 7
21360 READ A$
21370 FOR X=0 TO 63
21380 SHTMAP(X,Y)=VAL(MID$(A$,X+1,1))
21390 NEXT
21400 NEXT
21410 '
21420 *SHTMAP_DATA
21430 DATA 0000000000000000004000000000000000000040040000000222222242222222
21440 DATA 0000000000001322224222200001000000000040040000000000000040000000
21450 DATA 0000000000000000004000000005000000100040040000000222222222222222
21460 DATA 0000000013222222224000000004000001010222022000000000000012222222
21470 DATA 0000000000000000004000010134000000100004000000000000000012222222
21480 DATA 0001000000000000004000050004000000500002224200000222222222222222
21490 DATA 0005000000000000004000042224000000400000004000000000000040000000
21500 DATA 0004000000000000004000040004000000400000004000000222222242222222
21510 '
21520 VIL_MG_F$="VDEMO310":GOSUB *VIL_MG_LD
21530 '
21540 '<<<<<<<<<<<<<<<<<<<< MAIN MENU >>>>>>>>>>>>>>>>>>>>
21550 *MAINMENU
21560 'SCREEN 1,1:SCREEN@0:PALETTE@:CLS
21570 'SCREEN 1,0:SCREEN@0:CLS
21580 'MOUSE 2,VIL_VWM_MCA0$,VIL_VWM_MCD0$,VIL_VWM_MCX0%,VIL_VWM_MCY0%
21590 'ON ERROR GOTO 0'**********
21600 'GOTO *APPLY' *VWM_XSCRLBAR_0
21610 GOSUB *VIL_WIN_PMA
21620 CLS:PALETTE 4,[100,0,150]
21630 LINE(0,0)-(639,479),PSET,%4,BF
21640 LINE(216,128)-(423,399),PRESET,,BF
21650 SYMBOL(224,32),"Visual Interface Library",1,1,7
21660 SYMBOL(272,64),"VIL",2,2,4,,,7
21670 SYMBOL(192,104),"デモンストレ-ション プログラム",1,1,4
21680 RESTORE *MAINMENU_DATA
21690 FOR Y=0 TO 3
21700 READ A$
21710 SYMBOL(232,Y*32+144),FNVIL_P2S$(Y+1)+" "+A$,1,1,7
21720 NEXT
21730 '
21740 *MAINMENU_DATA
21750 DATA "はじめに","基本パッケージ"
21760 DATA "ウィンドウマネージャ","応用例"
21770 '
21780 VIL_X%=224:VIL_Y%=142:VIL_W%=VIL_X%+191:VIL_Z%=VIL_Y%+19
21790 VIL_XN%=1:VIL_YN%=4:VIL_YL%=32:VIL_C%=15:VIL_CB%=0
21800 VIL_MSEL_BB%=1:VIL_MSEL_BE%=4:VIL_MSEL_BD%=0:VIL_MSEL_BAM%=0:
21810 VIL_MSEL_MN%=100:VIL_MSEL_BC%=0
21820 GOSUB *VIL_MSEL_M
21830 IF VIL_KN%>0 THEN ON VIL_KN% GOSUB *INTRO,*BAS,*VWM,*APPLY
21840 GOTO *MAINMENU
21850 '
21860 '<<<<<<<<<<<<<<<<<<<< はじめに >>>>>>>>>>>>>>>>>>>>
21870 *INTRO
21880 CLS
21890 VIL_WIN_X%=20:VIL_WIN_Y%=20:VIL_WIN_W%=VIL_WIN_X%+399:VIL_WIN_Z%=471
21900 VIL_VWM_AT%=0:VIL_VWM_T$="INTRO"
21910 GOSUB *VIL_VWM_OP
21920 SYMBOL(8, 8)," ~ はじめに ~ ",1,1,6
21930 SYMBOL(8, 36)," VILはF-BASIC386上のプログラムで、",1,1,7
21940 SYMBOL(8, 56),"マルチウィンドウ表示・マウス入力などのユーザ・イ",1,1,7
21950 SYMBOL(8, 76),"ンタフェースを実現するサブルーチン集です。 ",1,1,7
21960 SYMBOL(8, 96)," このデモンストレーション・プログラムでは、以下",1,1,7
21970 SYMBOL(8,116),"の項目でその機能を説明します。 ",1,1,7
21980 SYMBOL(8,136)," 2.基本パッケージ ",1,1,7
21990 SYMBOL(8,156)," ウィンドウ、メニュー選択、文字列入力、 ",1,1,7
22000 SYMBOL(8,176)," マルチグラフィック表示 ",1,1,7
22010 SYMBOL(8,196)," 3.ウィンドウマネージャ・パッケージ ",1,1,7
22020 SYMBOL(8,216)," 移動、サイズ変更、スクロールバー ",1,1,7
22030 SYMBOL(8,236)," 4.応用 ",1,1,7
22040 SYMBOL(8,256)," 各パッケージの組み合わせによる応用例 ",1,1,7
22050 SYMBOL(8,436)," リターンキーかマウスの左ボタンを押してください ",1,1,6
22060 WAIT 50
22070 WHILE INKEY$<>CHR$(13) AND MOUSE(3,0)=0 AND MOUSE(2,0)=0:WEND
22080 GOSUB *VIL_VWM_CL
22090 RETURN
22100 '
22110 '<<<<<<<<<<<<<<<<<<<< 基本パッケージ >>>>>>>>>>>>>>>>>>>>
22120 *BAS
22130 '
22140 CLS'SCREEN 0:CLS
22150 MOUSE 2,VIL_VWM_MCA0$,VIL_VWM_MCD0$,VIL_VWM_MCX0%,VIL_VWM_MCY0%
22160 LINE(0,0)-(639,479),PSET,4,BF
22170 FOR I=0 TO 30
22180 LINE(RND*639,RND*480)-(RND*639,RND*480),XOR,RND*6+1,BF
22190 NEXT
22200 '
22210 VIL_WIN_X%=30:VIL_WIN_Y%=50
22220 VIL_WIN_W%=VIL_WIN_X%+16*16+15:VIL_WIN_Z%=VIL_WIN_Y%+136+16+7
22230 VIL_WIN_UB%=0:VIL_WIN_DB%=0:VIL_WIN_LB%=0:VIL_WIN_RB%=0
22240 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP:GOSUB *VIL_WIN_PMR
22250 CLS
22260 SYMBOL(8, 8)," ~ VIL 基本パッケージ ~ ",1,1,6
22270 SYMBOL(8, 36),"基本パッケージは以下のパッケージ",1,1,7
22280 SYMBOL(8, 56),"から成っています。 ",1,1,7
22290 SYMBOL(8, 76),"・ブザー音パッケージ ",1,1,7
22300 SYMBOL(8, 96),"・ウィンドウ・パッケージ ",1,1,7
22310 SYMBOL(8,116),"・メニュー選択パッケージ ",1,1,7
22320 SYMBOL(8,136),"・入力パッケージ ",1,1,7
22330 '
22340 VIL_WIN_X%=50:VIL_WIN_Y%=240
22350 VIL_WIN_W%=VIL_WIN_X%+16*13+15:VIL_WIN_Z%=VIL_WIN_Y%+68+16+7
22360 VIL_WIN_UB%=0:VIL_WIN_DB%=0:VIL_WIN_LB%=0:VIL_WIN_RB%=0
22370 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP:GOSUB *VIL_WIN_PMR
22380 CLS
22390 SYMBOL(8, 8),"ウィンドウ・パッケージでは",1,1,7
22400 SYMBOL(8, 28),"このように画面の矩形領域を",1,1,7
22410 SYMBOL(8, 48),"退避し、ウィンドウを開くこ",1,1,7
22420 SYMBOL(8, 68),"とができます。 ",1,1,7
22430 '
22440 VIL_WIN_X%=30:VIL_WIN_Y%=350
22450 VIL_WIN_W%=VIL_WIN_X%+16*15+15:VIL_WIN_Z%=VIL_WIN_Y%+28+16+7
22460 VIL_WIN_UB%=5:VIL_WIN_DB%=5:VIL_WIN_LB%=5:VIL_WIN_RB%=5
22470 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP
22480 LINE(VIL_WIN_X%-5,VIL_WIN_Y%-5)-(VIL_WIN_W%+5,VIL_WIN_Z%+5),PSET,0,B
22490 LINE(VIL_WIN_X%-4,VIL_WIN_Y%-4)-(VIL_WIN_W%+4,VIL_WIN_Z%+4),PSET,7,BF
22500 LINE(VIL_WIN_X%-2,VIL_WIN_Y%-2)-(VIL_WIN_W%+2,VIL_WIN_Z%+2),PSET,0,B
22510 LINE(VIL_WIN_X%-1,VIL_WIN_Y%-1)-(VIL_WIN_W%+1,VIL_WIN_Z%+1),PSET,0,B
22520 GOSUB *VIL_WIN_PMR
22530 SYMBOL(8, 8),"必要ならばユーザ・プログラムが",1,1,0
22540 SYMBOL(8, 28),"枠などを描画できます。 ",1,1,0
22550 '
22560 VIL_WIN_X%=360:VIL_WIN_Y%=40
22570 VIL_WIN_W%=VIL_WIN_X%+16*11+15:VIL_WIN_Z%=VIL_WIN_Y%+139
22580 VIL_WIN_UB%=2:VIL_WIN_DB%=2:VIL_WIN_LB%=2:VIL_WIN_RB%=2
22590 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP
22600 DEF PEN 0,2
22610 LINE(VIL_WIN_X%-2,VIL_WIN_Y%-2)-(VIL_WIN_W%+1,VIL_WIN_Z%+1),PSET,1,B
22620 GOSUB *VIL_WIN_PMR
22630 CLS
22640 FOR I=1 TO 7
22650 CIRCLE(0,0),I*5,I
22660 CIRCLE(190,10),I*5,I
22670 SYMBOL(-60+I*8*6,120),"SAMPLE",1,1,I
22680 NEXT
22690 SYMBOL(8, 50),"ウィンドウ内への描画は",1,1,7
22700 SYMBOL(8, 70),"このようにクリッピング",1,1,7
22710 SYMBOL(8, 90),"させることが可能です。",1,1,7
22720 '
22730 PALETTE 4,[ 64, 64, 64]
22740 PALETTE 5,[128, 0, 0]
22750 RESTORE *WIN_DATA1
22760 FOR I=0 TO 2
22770 VIL_WIN_X%=320+I*24:VIL_WIN_Y%=240+I*48
22780 VIL_WIN_W%=VIL_WIN_X%+119:VIL_WIN_Z%=VIL_WIN_Y%+63
22790 VIL_WIN_UB%=16:VIL_WIN_DB%=2:VIL_WIN_LB%=2:VIL_WIN_RB%=2
22800 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP
22810 LINE(VIL_WIN_X%-2,VIL_WIN_Y%-16) -(VIL_WIN_W%+2,VIL_WIN_Y%- 2),PSET,%5,BF
22820 DEF PEN 0,2
22830 LINE(VIL_WIN_X%-2,VIL_WIN_Y%-16) -(VIL_WIN_W%+1,VIL_WIN_Z%+ 1),PSET,%4,B
22840 LINE(VIL_WIN_X%-2,VIL_WIN_Y%- 2) -(VIL_WIN_W%+1,VIL_WIN_Y% -2),PSET,%4
22850 DEF PEN 0,1
22860 LINE(VIL_WIN_X%+1,VIL_WIN_Y%-13) -(VIL_WIN_X%+9,VIL_WIN_Y%-4),PSET,%4,B
22870 CIRCLE(VIL_WIN_X%+5,VIL_WIN_Y%-8.6!),2,%1,1.5!,,,F
22880 LINE(VIL_WIN_W%-1,VIL_WIN_Y%-13) -(VIL_WIN_W%-9,VIL_WIN_Y%- 4),PSET,%4,B
22890 LINE(VIL_WIN_W%-1,VIL_WIN_Y%-13) -(VIL_WIN_W%-5,VIL_WIN_Y%- 8),PSET,%4,B
22900 SYMBOL(VIL_WIN_X%+13,VIL_WIN_Y%-11),"xterm",.5!,.5!,%4
22910 GOSUB *VIL_WIN_PMR
22920 CLS
22930 READ A$
22940 SYMBOL(8,8),A$,1,1,7
22950 NEXT
22960 '
22970 *WIN_DATA1
22980 DATA "ウィンドウの","重ね合わせも","このとおり"
22990 '
23000 RESTORE *WIN_DATA2
23010 GOSUB *VIL_WIN_PMA
23020 LINE(272,434)-(639,479),PSET,7,BF
23030 SYMBOL(280,440),"[RET]キー/マウスの左クリック/パッドの[A]で",1,1,0
23040 SYMBOL(280,460),"ウィンドウが1個ずつ閉じます。 ",1,1,0
23050 FOR I=1 TO 6
23060 WHILE INKEY$=CHR$(13) OR MOUSE(3,0) OR PTRIG(1)=1:WEND
23070 WHILE INKEY$<>CHR$(13) AND MOUSE(3,0)=0 AND PTRIG(1)<>1:WEND
23080 READ VIL_WIN_UB%,VIL_WIN_DB%,VIL_WIN_LB%,VIL_WIN_RB%
23090 GOSUB *VIL_WIN_CL
23100 NEXT
23110 '
23120 *WIN_DATA2
23130 DATA 16,2,2,2, 16,2,2,2, 16,2,2,2, 2,2,2,2, 5,5,5,5, 0,0,0,0
23140 '
23150 LINE(272,434)-(639,479),PSET,7,BF
23160 SYMBOL(280,440),"取消キー/マウスの右クリック/パッドの[B]で",1,1,0
23170 SYMBOL(280,460),"次に進みます。",1,1,0
23180 '
23190 VIL_WIN_X%=50:VIL_WIN_Y%=240
23200 VIL_WIN_W%=VIL_WIN_X%+16*13+15:VIL_WIN_Z%=VIL_WIN_Y%+148+16+7
23210 VIL_WIN_UB%=0:VIL_WIN_DB%=0:VIL_WIN_LB%=0:VIL_WIN_RB%=0
23220 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP:GOSUB *VIL_WIN_PMR
23230 CLS
23240 SYMBOL(8, 8),"メニュー選択パッケージでは",1,1,7
23250 SYMBOL(8, 28),"・マウス ",1,1,7
23260 SYMBOL(8, 48),"・パッド ",1,1,7
23270 SYMBOL(8, 68),"・テンキー ",1,1,7
23280 SYMBOL(8, 88),"・カ-ソルキー ",1,1,7
23290 SYMBOL(8,108),"などを使用して、 ",1,1,7
23300 SYMBOL(8,128),"画面の矩形領域(ボックス)",1,1,7
23310 SYMBOL(8,148),"の一つを選択できます。 ",1,1,7
23320 '
23330 VIL_WIN_X%=320:VIL_WIN_Y%=40
23340 VIL_WIN_W%=VIL_WIN_X%+16*18+15:VIL_WIN_Z%=VIL_WIN_Y%+359
23350 VIL_WIN_UB%=0:VIL_WIN_DB%=0:VIL_WIN_LB%=0:VIL_WIN_RB%=0
23360 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP:GOSUB *VIL_WIN_PMR
23370 '
23380 CLS
23390 SYMBOL(8, 8),"例えば下の数字の中から",1,1,7
23400 SYMBOL(8, 28),"一つ選択してみてください。",1,1,7
23410 FOR Y=0 TO 2
23420 FOR X=0 TO 2
23430 LINE(X*64+16,192-Y*64)-(X*64+63,192-Y*64+47),PSET,7,B
23440 SYMBOL(X*64+28,194-Y*64),FNVIL_I2S$(Y*3+X+1),3,3,7
23450 NEXT
23460 NEXT
23470 SYMBOL(16, 304),"選択→",1,1,7
23480 LINE(80,288)-(127,335),PSET,7,B
23490 '
23500 VIL_MSEL_BN%=1:VIL_MSEL_MN%=0:VIL_MSEL_BC%=0
23510 '
23520 *MSEL_TENKEY1
23530 VIL_X%=12:VIL_Y%=188:VIL_W%=VIL_X%+55:VIL_Z%=VIL_Y%+55
23540 VIL_XN%=3:VIL_YN%=3:VIL_XL%=64:VIL_YL%=64:VIL_MSEL_BD%=4:VIL_C%=10
23550 VIL_MSEL_BB%=1:VIL_MSEL_BE%=9
23560 GOSUB *VIL_MSEL_M
23570 IF VIL_KN%>0 THEN
23580 LINE(81,289)-(126,334),PRESET,,BF
23590 SYMBOL(92,290),FNVIL_P2S$(VIL_KN%),3,3,6
23600 ENDIF
23610 IF VIL_KN%<>-1 THEN *MSEL_TENKEY1
23620 '
23630 *MSEL_TAU1
23640 CLS
23650 '
23660 ANS=INT(RND*64)+1
23670 FOR Y=0 TO 7
23680 FOR X=0 TO 7
23690 XA=RND*8:YA=RND*8
23700 SYMBOL(X*24+XA+64,Y*24+YA+64), KMID$("ΤT",2+(Y*8+X+1=ANS),1),1,1,RND*6+1
23710 NEXT
23720 NEXT
23730 SYMBOL(8,260)," ☆☆☆ 「Τを探せ」ゲ-ム ☆☆☆ ",1,1,6
23740 SYMBOL(8,280),"T(ティー)の中に一つだけ隠れている ",1,1,4
23750 SYMBOL(8,300),"Τ(タウ)を見つけて選択してください。",1,1,4
23760 '
23770 VIL_MSEL_BN%=1:VIL_MSEL_MN%=0:VIL_MSEL_BC%=0
23780 '
23790 *MSEL_TAU2
23800 VIL_X%=64:VIL_Y%=64:VIL_W%=VIL_X%+23:VIL_Z%=VIL_Y%+23
23810 VIL_XL%=24:VIL_YL%=24:VIL_XN%=8:VIL_YN%=8:VIL_MSEL_BD%=0:VIL_C%=15
23820 VIL_MSEL_BB%=1:VIL_MSEL_BE%=64
23830 GOSUB *VIL_MSEL_M
23840 IF VIL_KN%>0 THEN
23850 IF VIL_KN%=ANS THEN
23860 LINE(80,320)-(239,335),PRESET,,BF
23870 SYMBOL(80,320),"☆☆☆ 正解! ☆☆☆",1,1,6
23880 GOSUB *VIL_BEEP_G
23890 GOTO *MSEL_TAU1
23900 ELSE
23910 LINE(80,320)-(239,335),PRESET,,BF
23920 SYMBOL(80,320),"××× はずれ ×××",1,1,2
23930 GOSUB *VIL_BEEP_B
23940 ENDIF
23950 ENDIF
23960 IF VIL_KN%<>-1 THEN *MSEL_TAU2
23970 '
23980 *MSEL_ADV1
23990 CLS
24000 '
24010 LINE(4, 4)-(299,295),PSET,4,B
24020 LINE(8, 30)-(295,229),PSET,4,B
24030 LINE(8,234)-(295,261),PSET,4,B
24040 SYMBOL(104,10),"MYSTIC HOUSE",1,1,4
24050 SYMBOL(16,238),"見る 取る 動かす たたく 終わる",1,1,4
24060 SYMBOL(8,302)," ↑ アドベンチャーゲームなどにも",1,1,7
24070 SYMBOL(8,322)," 利用できます。",1,1,7
24080 RESTORE *MSEL_DATA1
24090 FOR I=0 TO 17
24100 READ K,X,Y:LINE(X,Y)-(X,Y),PSET,4
24110 FOR J=2 TO K:READ X,Y:LINE -(X,Y),PSET,4:NEXT
24120 NEXT
24130 '
24140 *MSEL_DATA1
24150 DATA 4, 48, 30, 48,110, 255,110, 255, 30
24160 DATA 2, 48,110, 8,229
24170 DATA 2, 255,110, 295,229
24180 DATA 4, 70,110, 70, 35, 110, 35, 110,110
24190 DATA 5, 74, 70, 74, 73, 77, 73, 77, 70, 74, 70
24200 DATA 5, 130,130, 120,160, 210,160, 200,130, 130,130
24210 DATA 4, 120,160, 120,170, 210,170, 210,160
24220 DATA 4, 135,170, 125,210, 130,210, 140,170
24230 DATA 4, 195,170, 205,210, 200,210, 190,170
24240 DATA 5, 265, 40, 265, 80, 280,130, 280, 90, 265, 40
24250 DATA 5, 160, 45, 160, 80, 200, 80, 200, 45, 160, 45
24260 DATA 5, 170, 50, 173, 74, 187, 70, 188, 52, 170, 50
24270 DATA 2, 174, 56, 177, 55
24280 DATA 2, 182, 56, 185, 58
24290 DATA 2, 180, 57, 178, 62
24300 DATA 2, 176, 70, 181, 67
24310 DATA 5, 65,127, 65,122, 70,127, 65,127, 58,134
24320 DATA 2, 61,131, 63,134
24330 '
24340 VIL_MSEL_BN%=1:VIL_MSEL_BC%=0
24350 '
24360 *MSEL_ADV2
24370 VIL_X%=14:VIL_Y%=236:VIL_W%=VIL_X%+51:VIL_Z%=VIL_Y%+23
24380 VIL_XN%=5:VIL_YN%=1:VIL_XL%=56:VIL_MSEL_BD%=0:VIL_C%=15
24390 VIL_MSEL_BB%=1:VIL_MSEL_BE%=5:VIL_MSEL_MN%=101
24400 GOSUB *VIL_MSEL_M
24410 IF VIL_KN%>0 THEN
24420 VIL_X%=8:VIL_Y%=265:VIL_L%=36:VIL_C%=12
24430 VIL_A$=KMID$("見る 取る 動かすたたく終わる",VIL_KN%*3-2,3)
24440 GOSUB *VIL_INP_GPRINT
24450 IF VIL_KN%=5 THEN *MSEL_CNFM1
24460 VERB=VIL_KN%
24470 '
24480 RESTORE *MSEL_DATA2
24490 FOR I=1 TO 5
24500 READ VIL_MSEL_X%(I),VIL_MSEL_Y%(I),VIL_MSEL_W%(I),VIL_MSEL_Z%(I)
24510 NEXT
24520 VIL_XN%=5:VIL_YN%=1:VIL_MSEL_BD%=0:VIL_C%=15
24530 VIL_MSEL_MN%=102:VIL_MSEL_BC%=0
24540 VIL_MSEL_BB%=1:VIL_MSEL_BE%=5
24550 *MSEL_ADV3
24560 GOSUB *VIL_MSEL_IN
24570 GOSUB *VIL_MSEL_BC
24580 IF VIL_KN%<1 THEN *MSEL_ADV3
24590 '
24600 *MSEL_DATA2
24610 DATA 68, 33,112,112
24620 DATA 158, 43,202, 82
24630 DATA 263, 38,282,132
24640 DATA 56,120, 72,136
24650 DATA 118,128,212,212
24660 '
24670 RESTORE *MSEL_DATA3:FOR I=1 TO VIL_KN%:READ VIL_A$:NEXT
24680 '
24690 *MSEL_DATA3
24700 DATA ドア,肖像画,窓,鍵,テーブル
24710 '
24720 VIL_X%=64:VIL_Y%=265:VIL_L%=8:VIL_C%=12:VIL_CB%=0
24730 GOSUB *VIL_INP_GPRINT
24740 '
24750 RESTORE *MSEL_DATA4
24760 FOR I=1 TO VERB
24770 IF I=VERB THEN
24780 FOR J=1 TO VIL_KN%:READ VIL_A$:NEXT
24790 ELSE
24800 FOR J=1 TO 5:READ VIL_A$:NEXT
24810 ENDIF
24820 NEXT
24830 '
24840 *MSEL_DATA4
24850 DATA "閉まっている ","見覚えのない顔だ ","外は晴れている "
24860 DATA "黄金の鍵だ ","埃が積もっている "
24870 DATA "取れるわけがない ","使い道はなさそうだ","取れるわけがない "
24880 DATA "何故か取れない ","重くて持てない "
24890 DATA "鍵が掛かっている ","ネジ止めされている","錆びついている "
24900 DATA "何故か動かない ","疲れるからいやだ "
24910 DATA "トントン ","手が痛いからいやだ","叩いても開かない "
24920 DATA "叩いてどーする ","ドンドン "
24930 '
24940 VIL_X%=136:VIL_Y%=265:VIL_L%=20:VIL_C%=12:VIL_CB%=0
24950 VIL_A$=": "+VIL_A$
24960 GOSUB *VIL_INP_GPRINT
24970 ENDIF
24980 GOTO *MSEL_ADV2
24990 '
25000 *MSEL_CNFM1
25010 MAXTURN=50
25020 RESTORE *MSEL_DATA5
25030 FOR I=1 TO 8
25040 READ J:VIL_MSEL_BN%(105+I)=J
25050 NEXT
25060 '
25070 *MSEL_DATA5
25080 DATA 2,1,1,2,2,4,1,1
25090 '
25100 *MSEL_CNFM2
25110 CLS
25120 SYMBOL(16, 8)," ☆☆☆☆☆ 設 定 ☆☆☆☆☆ ",1,1,6
25130 SYMBOL(16, 36),"表示 英語 日本語 ",1,1,7
25140 SYMBOL(16, 60),"BGM ON OFF ",1,1,7
25150 SYMBOL(16, 84),"効果音 ON OFF ",1,1,7
25160 SYMBOL(16,108),"ヒント あり なし ",1,1,7
25170 SYMBOL(16,132),"難易度 初級 中級 上級 ",1,1,7
25180 SYMBOL(16,156),"表示速度 0 1 2 3 4 5",1,1,7
25190 SYMBOL(16,180),"最大ターン (00) ← → (99)",1,1,7
25200 SYMBOL(16,212)," ~ 決定 取消 ~ ",1,1,7
25210 SYMBOL(16,276)," ↑ 設定メニューも実現できます。",1,1,5
25220 GOSUB *PRINT_TURN
25230 '
25240 VIL_MSEL_BC%=0:VIL_VWM_R%=0
25250 VIL_C%=15:VIL_CC%=7
25260 VIL_MSEL_CMN%=105:VIL_MSEL_CMR%=8
25270 VIL_MSEL_BN%(VIL_MSEL_CMN%)=1 'カーソル位置を第一行に設定
25280 GOSUB *VIL_MSEL_CNFSV
25290 MAXTURN_OLD=MAXTURN
25300 '
25310 RESTORE *MSEL_DATA6
25320 FOR I=1 TO 8
25330 READ VIL_MSEL_CX%(I),VIL_MSEL_CY%(I)
25340 READ W,Z
25350 VIL_MSEL_CW%(I)=VIL_MSEL_CX%(I)+W
25360 VIL_MSEL_CZ%(I)=VIL_MSEL_CY%(I)+Z
25370 READ VIL_MSEL_CL%(I)
25380 READ VIL_MSEL_CN%(I),VIL_MSEL_CBB%(I),VIL_MSEL_CBE%(I)
25390 NEXT
25400 '
25410 *MSEL_DATA6
25420 DATA 108, 34, 51, 19, 96, 2,1,2
25430 DATA 108, 58, 51, 19, 96, 2,1,2
25440 DATA 108, 82, 51, 19, 96, 2,1,2
25450 DATA 108,106, 51, 19, 96, 2,1,2
25460 DATA 108,130, 35, 19, 48, 3,1,3
25470 DATA 108,154, 19, 19, 32, 6,0,5
25480 DATA 108,178, 35, 19, 144, 2,1,2
25490 DATA 108,210, 35, 19, 48, 2,1,2
25500 '
25510 ENDF=0
25520 WHILE ENDF=0
25530 GOSUB *VIL_MSEL_CNFM
25540 IF VIL_MSEL_CR%=7 AND VIL_KN%>0 THEN
25550 MAXTURN=MAXTURN-(VIL_KN%=1)*(MAXTURN>0)+(VIL_KN%=2)*(MAXTURN<99)
25560 GOSUB *PRINT_TURN
25570 ELSE IF VIL_MSEL_CR%=8 THEN
25580 ENDF=-1
25590 IF VIL_KN%=2 THEN GOSUB *VIL_MSEL_CNFLD:MAXTURN=MAXTURN_OLD
25600 ' 設定を取消
25610 ENDIF
25620 WEND
25630 '
25640 *MSEL_CNFM3
25650 SYMBOL(16,304)," もう一度やりますか? ",1,1,7
25660 VIL_X%=92:VIL_Y%=334:VIL_MSEL_BN%=1:VIL_C%=15
25670 GOSUB *VIL_SEL_YN
25680 SYMBOL(16,304)," ",1,1,7
25690 IF VIL_KN%=1 THEN *MSEL_CNFM2 ELSE IF VIL_KN%=2 THEN *INP ELSE *MSEL_CNFM3
25700 '
25710 *PRINT_TURN
25720 VIL_X%=192:VIL_Y%=180:VIL_L%=2:VIL_C%=15:VIL_CB%=0
25730 VIL_A$=FNVIL_P2S0$(MAXTURN,2)
25740 GOSUB *VIL_INP_GPRINT
25750 RETURN
25760 '
25770 *INP
25780 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_CL:GOSUB *VIL_WIN_CL
25790 '
25800 LINE(272,434)-(639,479),PSET,4,BF
25810 VIL_WIN_X%=16:VIL_WIN_Y%=240
25820 VIL_WIN_W%=VIL_WIN_X%+16*15+15:VIL_WIN_Z%=VIL_WIN_Y%+68+16+7
25830 VIL_WIN_UB%=0:VIL_WIN_DB%=0:VIL_WIN_LB%=0:VIL_WIN_RB%=0
25840 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP:GOSUB *VIL_WIN_PMR
25850 CLS
25860 SYMBOL(8, 8),"入力パッケージでは、 ",1,1,7
25870 SYMBOL(8, 28),"・入力文字列の最大長を指定可能",1,1,7
25880 SYMBOL(8, 48),"・日本語入力が可能 ",1,1,7
25890 SYMBOL(8, 68),"・ヒストリ呼び出しが可能 ",1,1,7
25900 '
25910 VIL_WIN_X%=320:VIL_WIN_Y%=8
25920 VIL_WIN_W%=VIL_WIN_X%+16*18+15:VIL_WIN_Z%=VIL_WIN_Y%+376+16+7
25930 VIL_WIN_UB%=0:VIL_WIN_DB%=0:VIL_WIN_LB%=0:VIL_WIN_RB%=0
25940 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP:GOSUB *VIL_WIN_PMR
25950 NAM$="":TIM$=""
25960 '
25970 *INP_NAME1
25980 CLS:GOSUB *VIL_INP_FEPON
25990 SYMBOL(8, 8),"***** 使用可能キー *****",1,1,6
26000 SYMBOL(8, 28),"[RET] : 決定 ",1,1,7
26010 SYMBOL(8, 48),"[取消] : 取消 ",1,1,7
26020 SYMBOL(8, 68),"← → : カーソル移動 ",1,1,7
26030 SYMBOL(8, 88),"[BS] : カーソル位置の左1文字削除",1,1,7
26040 SYMBOL(8,108),"[削除] : カーソル位置1文字削除 ",1,1,7
26050 SYMBOL(8,128),"[HOME] : クリア ",1,1,7
26060 SYMBOL(8,148),"↑↓ : ヒストリー呼び出し ",1,1,7
26070 SYMBOL(8,168),"マウス左/右 : [決定]/[取消]と等価 ",1,1,7
26080 SYMBOL(8,188),"パッドA/B : [決定]/[取消]と等価 ",1,1,7
26090 SYMBOL(8,208),"方向ボタン : カーソルキーと等価 ",1,1,7
26100 SYMBOL(8,228),"***** 使用例 *****",1,1,6
26110 '
26120 SYMBOL(8,248),"あなたの名前を入力してください。 ",1,1,7
26130 SYMBOL(8,268),"(半角16文字以内) : ",1,1,7
26140 '
26150 *INP_NAME2
26160 VIL_X%=8+16*9:VIL_Y%=268:VIL_L%=16:VIL_C%=15:VIL_CB%=0:VIL_A$="" 'NAM$
26170 VIL_INP_HSN%=1
26180 GOSUB *VIL_INP_STR
26190 IF VIL_KN%=-1 OR VIL_A$="" THEN *INP_NAME2
26200 NAM$=VIL_A$
26210 '
26220 SYMBOL(8,288),"現在時刻を入力してください。 ",1,1,7
26230 SYMBOL(8,308),"(00:00~23:59) : ",1,1,7
26240 '
26250 *INP_NAME3
26260 VIL_INP_HSN%=2
26270 VIL_X%=8+16*9:VIL_Y%=308:VIL_L%=5:VIL_C%=15:VIL_CB%=0:VIL_A$="" 'TIM$
26280 GOSUB *VIL_INP_STR
26290 IF VIL_KN%=-1 OR VIL_A$="" THEN *INP_NAME3
26300 TIM$=VIL_A$
26310 IF LEN(VIL_A$)<>5 OR MID$(VIL_A$,3,1)<>":" THEN GOSUB *VIL_BEEP_B:GOTO *INP_NAME3
26320 HOUR=VAL(LEFT$(VIL_A$,2)):MINUTE=VAL(MID$(VIL_A$,4,2))
26330 IF HOUR<0 OR 23<HOUR OR MINUTE<0 OR 59<MINUTE THEN
26340 GOSUB *VIL_BEEP_B:GOTO *INP_NAME3
26350 ENDIF
26360 IF 6<=HOUR AND HOUR<=11 THEN
26370 A$="おはよう。"
26380 ELSE IF 12=<HOUR AND HOUR<=18 THEN
26390 A$="こんにちは。"
26400 ELSE
26410 A$="こんばんは。"
26420 ENDIF
26430 '
26440 GOSUB *VIL_INP_FEPOFF
26450 SYMBOL(8,328),"現在"+FNVIL_P2S$(HOUR)+"時"+FNVIL_P2S$(MINUTE)+"分。" ,1,1,4
26460 SYMBOL(8,348),NAM$+"さん、"+A$,1,1,4
26470 *INP_NAME4
26480 SYMBOL(8,376),"もう一度やる?",1,1,7
26490 VIL_MSEL_BN%=1
26500 VIL_X%=132:VIL_Y%=372
26510 GOSUB *VIL_SEL_YN
26520 IF VIL_KN%<1 THEN *INP_NAME4
26530 IF VIL_KN%=1 THEN *INP_NAME1
26540 '
26550 'SCREEN 1,0
26560 RETURN
26570 '
26580 '<<<<<<<<<<<<<<<<<<<< ウィンドウマネージャ >>>>>>>>>>>>>>>>>>>>
26590 *VWM
26600 CLS'SCREEN 1,0:CLS
26610 VIL_VWM_N%=0
26620 VIL_WIN_UB%=14:VIL_WIN_DB%=8:VIL_WIN_RB%=8:VIL_WIN_LB%=8
26630 'ウィンドウ枠幅設定
26640 PALETTE 7,[255,255,255] 'パレット(8 XOR 15)を白にする
26650 PALETTE 5,[80,80,0]
26660 FOR Y=0 TO 479 STEP 16
26670 FOR X=0 TO 639 STEP 8*7
26680 SYMBOL(X,Y),"VIL ",1,1,%5,,NOT
26690 NEXT
26700 NEXT
26710 '
26720 VIL_WIN_X%=100 :VIL_WIN_Y%=40
26730 VIL_WIN_W%=VIL_WIN_X%+16*19+15:VIL_WIN_Z%=VIL_WIN_Y%+8+16+7
26740 VIL_VWM_T$="VWM":VIL_VWM_AT%=0
26750 GOSUB *VIL_VWM_OP
26760 SYMBOL( 8, 8),"~ ウィンドウマネージャ・パッケージ ~",1,1,6
26770 '
26780 GOSUB *VIL_WIN_PMA
26790 VIL_WIN_X%=20 :VIL_WIN_Y%=80
26800 VIL_WIN_W%=VIL_WIN_X%+16*16+15:VIL_WIN_Z%=VIL_WIN_Y%+136+16+7
26810 VIL_VWM_T$="MOVE":VIL_VWM_AT%=8
26820 GOSUB *VIL_VWM_OP
26830 SYMBOL( 8, 8)," ~ ウィンドウ移動 ~ ",1,1,6
26840 SYMBOL( 8, 36)," MOVE 属性をもつウィンドウは、上",1,1,7
26850 SYMBOL( 8, 56),"部のタイトルバーにマウスカーソル",1,1,7
26860 SYMBOL( 8, 76),"を合わせて左ボタンを押すと、ドラ",1,1,7
26870 SYMBOL( 8, 96),"ッグで動かすことができます。 ",1,1,7
26880 SYMBOL( 8,136)," 納得した。→ ",1,1,7
26890 '
26900 VIL_KN%=0
26910 WHILE VIL_KN%<>1
26920 VIL_X%=228:VIL_Y%=132
26930 GOSUB *VIL_SEL_OK
26940 IF VIL_KN%=-2 THEN GOSUB *VIL_VWM_WIN
26950 WEND
26960 '
26970 VIL_WIN_X%=60 :VIL_WIN_Y%=122
26980 VIL_WIN_W%=VIL_WIN_X%+16*15+15:VIL_WIN_Z%=VIL_WIN_Y%+116+16+7
26990 VIL_VWM_T$="CLOSE 0":VIL_VWM_AT%=0
27000 GOSUB *VIL_VWM_OP
27010 SYMBOL(8, 8)," ~ ウィンドウ・クローズ ~ ",1,1,6
27020 SYMBOL(8,36),"CLOSE 属性をもつウィンドウは、",1,1,7
27030 SYMBOL(8,56),"左上隅の スイッチをクリックす",1,1,7
27040 SYMBOL(8,76),"ると、閉じることができます。 ",1,1,7
27050 LINE(75,60)-(84,69),PSET,7,B
27060 LINE(75,60)-(84,69),PSET,7
27070 LINE(75,69)-(84,60),PSET,7
27080 '
27090 *VWM_CL0
27100 '
27110 VIL_WIN_X%=160 :VIL_WIN_Y%=250
27120 VIL_WIN_W%=VIL_WIN_X%+16*12+15:VIL_WIN_Z%=VIL_WIN_Y%+28+16+7
27130 VIL_VWM_T$="CLOSE 1":VIL_VWM_AT%=2
27140 GOSUB *VIL_VWM_OP
27150 SYMBOL(8, 8),"例えば、このウィンドウを",1,1,7
27160 SYMBOL(8,28),"閉じてみてください。 ",1,1,7
27170 '
27180 VIL_VWM_R%=0
27190 WHILE VIL_VWM_R%<>2
27200 MOUSE 1,,,1
27210 WHILE MOUSE(3,0)=0 AND MOUSE(2,0)=0:WEND
27220 VIL_MX%=MOUSE(0):VIL_MY%=MOUSE(1)
27230 MOUSE 1,,,0
27240 GOSUB *VIL_VWM_WIN
27250 WEND
27260 '
27270 WHILE INKEY$<>"":WEND
27280 SYMBOL(8,116),"もう一度やる?",1,1,7
27290 '
27300 *VWM_CL1
27310 '
27320 'VIL_KN%=0
27330 VIL_X%=132:VIL_Y%=112
27340 GOSUB *VIL_SEL_YN
27350 IF VIL_KN%<1 THEN *VWM_CL1
27360 IF VIL_KN%=1 THEN *VWM_CL0
27370 '
27380 VIL_WIN_X%=100 :VIL_WIN_Y%=164
27390 VIL_WIN_W%=VIL_WIN_X%+16*15+15:VIL_WIN_Z%=VIL_WIN_Y%+136+16+7
27400 VIL_VWM_T$="HIDE":VIL_VWM_AT%=4
27410 GOSUB *VIL_VWM_OP
27420 SYMBOL(8, 8)," ~ ウィンドウ一時消去 ~ ",1,1,6
27430 SYMBOL(8, 36)," HIDE 属性をもつウィンドウは、",1,1,7
27440 SYMBOL(8, 56),"左上隅の スイッチをクリックす",1,1,7
27450 SYMBOL(8, 76),"ると、左ボタンを押している間、",1,1,7
27460 SYMBOL(8, 96),"一時的に閉じることができます。",1,1,7
27470 SYMBOL(8,136)," 納得したら → ",1,1,7
27480 LINE(75,60)-(84,69),PSET,7,B
27490 LINE(75,69)-(84,60),PSET,7
27500 '
27510 VIL_KN%=0
27520 WHILE VIL_KN% <> 1
27530 VIL_X%=212:VIL_Y%=132
27540 GOSUB *VIL_SEL_OK
27550 IF VIL_KN%=-2 THEN GOSUB *VIL_VWM_WIN
27560 WEND
27570 '
27580 *VWM_RESIZE0
27590 VIL_WIN_X%=140 :VIL_WIN_Y%=206
27600 VIL_WIN_W%=VIL_WIN_X%+16*16+15:VIL_WIN_Z%=VIL_WIN_Y%+136+16+7
27610 VIL_VWM_T$="RESIZE":VIL_VWM_AT%=16
27620 GOSUB *VIL_VWM_OP
27630 *VWM_RESIZE1
27640 SYMBOL(8, 8)," ~ ウィンドウ・サイズ変更 ~ ",1,1,6
27650 SYMBOL(8, 36)," RESIZE 属性をもつウィンドウは、",1,1,7
27660 SYMBOL(8, 56),"右上隅の スイッチにマウスカーソ",1,1,7
27670 SYMBOL(8, 76),"ルを合わせて左ボタンを押すと、ド",1,1,7
27680 SYMBOL(8, 96),"ラッグで大きさを変えることができ",1,1,7
27690 SYMBOL(8,116),"ます。 ",1,1,7
27700 SYMBOL(8,136)," 納得したら → ",1,1,7
27710 LINE(75,60)-(84,69),PSET,7,B
27720 LINE(75,64)-(80,69),PSET,7,B
27730 *VWM_RESIZE2
27740 'VIL_KN%=0
27750 VIL_X%=212:VIL_Y%=132
27760 GOSUB *VIL_SEL_OK
27770 IF VIL_KN%=-2 THEN GOSUB *VIL_VWM_WIN: IF VIL_VWM_R%=16 THEN *VWM_RESIZE1
27780 IF VIL_KN%<>1 THEN *VWM_RESIZE2
27790 '
27800 *VWM_YSCRLBAR_0
27810 VIL_WIN_X%=100 :VIL_WIN_Y%=100
27820 VIL_WIN_W%=VIL_WIN_X%+16*20+15:VIL_WIN_Z%=VIL_WIN_Y%+20*16+15
27830 VIL_VWM_T$="Y SCROLL BAR":VIL_VWM_AT%=2+8192
27840 VIL_VWM_YLBL%=52:VIL_VWM_YLIL%=16:VIL_VWM_YLIP%=0:VIL_VWM_YLPL%=16
27850 GOSUB *VIL_VWM_OP
27860 MOUSE 1,,,1:VIL_VWM_R%=0
27870 WHILE VIL_VWM_R%<>2
27880 VIL_VWM_R%=0
27890 IF VIL_SBAR_R%=1 THEN '一行UP
27900 GET@A(0, 0)-(16*20+15,20*16+15),VIL_WIN_BF%, VIL_WIN_BFO&(VIL_WIN_AN%)
27910 PUT@A(0, 20)-(16*20+15,20*16+35),VIL_WIN_BF%,,,,, VIL_WIN_BFO&(VIL_WIN_AN%)
27920 LINE(0,0)-(16*20+15,19),PSET,%VIL_VWM_CB%,BF
27930 SYMBOL(8,8),TXTBUF$(VIL_VWM_YLIP%),1,1,7
27940 ELSE IF VIL_SBAR_R%=5 THEN '一行DOWN
27950 GET@A(0, 0)-(16*20+15,20*16+15),VIL_WIN_BF%, VIL_WIN_BFO&(VIL_WIN_AN%)
27960 PUT@A(0,-20)-(16*20+15,20*16- 5),VIL_WIN_BF%,,,,, VIL_WIN_BFO&(VIL_WIN_AN%)
27970 LINE(0,20*15+8)-(16*20+15,20*16+15),PSET,%VIL_VWM_CB%,BF
27980 SYMBOL(8,20*15+8),TXTBUF$(VIL_VWM_YLIP%+15),1,1,7
27990 ELSE
28000 GOSUB *VIL_VWM_CLS
28010 FOR I=0 TO 15
28020 SYMBOL(8,I*20+8),TXTBUF$(VIL_VWM_YLIP%+I),1,1,7
28030 NEXT
28040 ENDIF
28050 VIL_X%=-1:VIL_Y%=-1:VIL_W%=VIL_X%:VIL_Z%=VIL_Y%
28060 VIL_XN%=1:VIL_YN%=1:VIL_MSEL_BD%=0:VIL_C%=15:VIL_MSEL_MN%=0
28070 VIL_MSEL_BB%=1:VIL_MSEL_BE%=1
28080 WHILE VIL_VWM_R%<>8192 AND VIL_VWM_R%<>2
28090 GOSUB *VIL_MSEL_M
28100 GOSUB *VIL_VWM_CHECK
28110 WEND
28120 WEND
28130 '
28140 *VWM_XSCRLBAR_0
28150 VIL_WIN_X%=160 :VIL_WIN_Y%=160
28160 VIL_WIN_W%=VIL_WIN_X%+79:VIL_WIN_Z%=VIL_WIN_Y%+79
28170 VIL_VWM_T$="X-Y":VIL_VWM_AT%=2+4096+8192
28180 VIL_VWM_XLBL%=320:VIL_VWM_XLIL%=80:VIL_VWM_XLIP%=0:VIL_VWM_XLPL%=40
28190 VIL_VWM_YLBL%=320:VIL_VWM_YLIL%=80:VIL_VWM_YLIP%=0:VIL_VWM_YLPL%=40
28200 GOSUB *VIL_VWM_OP:CLS
28210 MOUSE 1,,,1:VIL_VWM_R%=0
28220 WHILE VIL_VWM_R%<>2
28230 VIL_VWM_R%=0
28240 VIL_MG_GN%=20
28250 VIL_MG_X%=-VIL_VWM_XLIP%
28260 VIL_MG_Y%=-VIL_VWM_YLIP%
28270 GOSUB *VIL_MG_PUTG
28280 VIL_X%=-1:VIL_Y%=-1:VIL_W%=VIL_X%:VIL_Z%=VIL_Y%
28290 VIL_XN%=1:VIL_YN%=1:VIL_MSEL_BD%=0:VIL_C%=15:VIL_MSEL_MN%=0
28300 VIL_MSEL_BB%=1:VIL_MSEL_BE%=1
28310 WHILE VIL_VWM_R%<>4096 AND VIL_VWM_R%<>8192 AND VIL_VWM_R%<>2
28320 GOSUB *VIL_MSEL_M
28330 GOSUB *VIL_VWM_CHECK
28340 WEND
28350 WEND
28360 'SCREEN 1,1:CLS:SCREEN 1,0
28370 '
28380 FOR I=1 TO 4:GOSUB *VIL_VWM_CL:NEXT
28390 VIL_WIN_X%=20 :VIL_WIN_Y%=80
28400 VIL_WIN_W%=VIL_WIN_X%+16*18+15:VIL_WIN_Z%=VIL_WIN_Y%+218+16+7
28410 VIL_VWM_T$="ALL 0":VIL_VWM_AT%=0
28420 GOSUB *VIL_VWM_OP
28430 SYMBOL(8, 8)," 最後の例として、全属性を指定したウ",1,1,7
28440 SYMBOL(8, 28),"ィンドウを右に挙げます。いろいろ試し",1,1,7
28450 SYMBOL(8, 48),"てみてください。 ",1,1,7
28460 SYMBOL(8, 68)," なお、このウィンドウは ",1,1,7
28470 SYMBOL(8, 88),"・移動範囲 : (120,40)-(599,439) ",1,1,4
28480 SYMBOL(8,108),"・最大サイズ : 328×248ドット ",1,1,4
28490 SYMBOL(8,128),"・最小サイズ : 136× 72ドット ",1,1,4
28500 SYMBOL(8,148),"・移動単位 : X・Y方向共 8ドット ",1,1,4
28510 SYMBOL(8,168),"・リサイズ単位 : X・Y方向共16ドット ",1,1,4
28520 SYMBOL(8,188),"となっています。 ",1,1,7
28530 '
28540 *VWM_ALL_0
28550 VIL_WIN_X%=320 :VIL_WIN_Y%=120
28560 VIL_WIN_W%=VIL_WIN_X%+167:VIL_WIN_Z%=VIL_WIN_Y%+119
28570 VIL_VWM_T$="ALL 1":VIL_VWM_AT%=1+2+4+8+16
28580 GOSUB *VIL_VWM_OP
28590 *VWM_ALL_1
28600 GOSUB *VWM_ALL_9
28610 VIL_VWM_XM%=120 '移動/リサイズ時ウィンドウ左上隅座標最小値
28620 VIL_VWM_YM%= 40
28630 VIL_VWM_WM%=599 '移動/リサイズ時ウィンドウ右下隅座標最大値
28640 VIL_VWM_ZM%=439
28650 VIL_VWM_XL%=136 'リサイズ時のX・Y方向長さ最小値
28660 VIL_VWM_YL%= 72
28670 VIL_VWM_WL%=328 'リサイズ時のX・Y方向長さ最大値
28680 VIL_VWM_ZL%=248
28690 VIL_VWM_XD%= 8 '移動時の単位ドット数
28700 VIL_VWM_YD%= 8
28710 VIL_VWM_WD%= 16 'リサイズ時の単位ドット数
28720 VIL_VWM_ZD%= 16
28730 '
28740 MOUSE 1,,,1:VIL_VWM_R%=0
28750 WHILE VIL_VWM_R%<>2
28760 VIL_X%=8:VIL_Y%=8:VIL_W%=VIL_X%+7:VIL_Z%=VIL_Y%+7
28770 VIL_XN%=1:VIL_YN%=1:VIL_MSEL_BD%=0:VIL_C%=15:VIL_MSEL_MN%=0
28780 VIL_MSEL_BB%=1:VIL_MSEL_BE%=1
28790 GOSUB *VIL_MSEL_M
28800 GOSUB *VIL_VWM_CHECK
28810 IF VIL_VWM_R% AND VIL_VWM_R%<>2 THEN GOSUB *VWM_ALL_1
28820 WEND
28830 '
28840 *VWM_ALL_2
28850 SYMBOL(8,218),"もう一度やる?",1,1,7
28860 VIL_KN%=0
28870 VIL_X%=132:VIL_Y%=218
28880 GOSUB *VIL_SEL_YN
28890 IF VIL_KN%<1 THEN *VWM_ALL_2
28900 IF VIL_KN%=1 THEN *VWM_ALL_0
28910 '
28920 VIL_VWM_XM%= 8 '移動/リサイズ時ウィンドウ左上隅座標最小値
28930 VIL_VWM_YM%= 14
28940 VIL_VWM_WM%=631 '移動/リサイズ時ウィンドウ右下隅座標最大値
28950 VIL_VWM_ZM%=471
28960 VIL_VWM_XL%= 32 'リサイズ時のX・Y方向長さ最小値
28970 VIL_VWM_YL%= 8
28980 VIL_VWM_WL%=624 'リサイズ時のX・Y方向長さ最大値
28990 VIL_VWM_ZL%=458
29000 VIL_VWM_XD%= 1 '移動時の単位ドット数
29010 VIL_VWM_YD%= 1
29020 VIL_VWM_WD%= 1 'リサイズ時の単位ドット数
29030 VIL_VWM_ZD%= 1
29040 GOSUB *VIL_VWM_CLALL
29050 RETURN
29060 '
29070 *VWM_ALL_9
29080 GOSUB *VIL_VWM_CLS
29090 CIRCLE((VIL_WIN_W%-VIL_WIN_X%)\2,(VIL_WIN_Z%-VIL_WIN_Y%)\2) ,(VIL_WIN_W%-VIL_WIN_X%)\2,1 ,(VIL_WIN_Z%-VIL_WIN_Y%)/(VIL_WIN_W%-VIL_WIN_X%)
29100 A$="位置 ("+FNVIL_P2S0$(VIL_WIN_X%,3)+"," +FNVIL_P2S0$(VIL_WIN_Y%,3)+")"
29110 SYMBOL(8, 8),A$,1,1,6
29120 A$=" -("+FNVIL_P2S0$(VIL_WIN_W%,3)+"," +FNVIL_P2S0$(VIL_WIN_Z%,3)+")"
29130 SYMBOL(8,28),A$,1,1,6
29140 A$="サイズ("+FNVIL_P2S0$(VIL_WIN_W%-VIL_WIN_X%+1,3)+"," +FNVIL_P2S0$(VIL_WIN_Z%-VIL_WIN_Y%+1,3)+")"
29150 SYMBOL(8,48),A$,1,1,6
29160 RETURN
29170 '
29180 '<<<<<<<<<<<<<<<<<<<< 応用例 >>>>>>>>>>>>>>>>>>>>
29190 *APPLY
29200 '
29210 CLS'SCREEN 1,0:CLS:SCREEN 1,1:CLS
29220 *FACE_DEMO_0
29230 VIL_MG_PN%=VIL_MG_MGD%(VIL_MG_MGI&(1)+1)
29240 GOSUB *VIL_MG_SETP
29260 'VIL_MG_PN%=1:GOSUB *VIL_MG_SETP
29270 VIL_MG_GN%=1:VIL_MG_X%=400:VIL_MG_Y%=200:GOSUB *VIL_MG_PUTG
29280 VIL_MG_GN%=4:VIL_MG_X%=447:VIL_MG_Y%=270:GOSUB *VIL_MG_PUTG: WAIT 20
29290 T1=0
29300 RESTORE *APPLY_MAKU_DATA
29310 FOR I=1 TO 17
29320 READ VIL_C%,A$,T2,VIL_A$
29330 VIL_X%=80:VIL_Y%=450:VIL_L%=64:GOSUB *VIL_INP_GPRINT
29340 IF A$="A" THEN VIL_MG_GN%=5:VIL_MG_X%=428:VIL_MG_Y%=242:GOSUB *VIL_MG_PUTG
29350 IF A$="B" THEN VIL_MG_GN%=6:VIL_MG_X%=428:VIL_MG_Y%=242:GOSUB *VIL_MG_PUTG
29360 IF A$="C" THEN
29370 VIL_MG_GN%=4:VIL_MG_X%=447:VIL_MG_Y%=270:GOSUB *VIL_MG_PUTG
29380 VIL_MG_GN%=6:VIL_MG_X%=428:VIL_MG_Y%=242:GOSUB *VIL_MG_PUTG
29390 WAIT 150
29400 VIL_MG_GN%=1:VIL_MG_X%=400:VIL_MG_Y%=200:GOSUB *VIL_MG_PUTG
29410 ENDIF
29420 IF A$="D" THEN
29430 WAIT 300
29440 VIL_MG_GN%=1:VIL_MG_X%=400:VIL_MG_Y%=200:GOSUB *VIL_MG_PUTG
29450 ENDIF
29460 ' T2=RND*6
29470 J=0:WHILE J<T2
29480 VIL_MG_GN%=3:VIL_MG_X%=447:VIL_MG_Y%=270:GOSUB *VIL_MG_PUTG: WAIT 5+RND*10
29490 VIL_MG_GN%=2:VIL_MG_X%=447:VIL_MG_Y%=270:GOSUB *VIL_MG_PUTG: WAIT 5+RND*10
29500 VIL_MG_GN%=3:VIL_MG_X%=447:VIL_MG_Y%=270:GOSUB *VIL_MG_PUTG: WAIT 5+RND*10
29510 IF RND>.3! THEN VIL_MG_GN%=4:VIL_MG_X%=447:VIL_MG_Y%=270:GOSUB *VIL_MG_PUTG: WAIT 10+RND*20
29520 T1=T1+1
29530 IF T1>10+RND*5 THEN
29540 VIL_MG_GN%=6:VIL_MG_X%=428:VIL_MG_Y%=242:GOSUB *VIL_MG_PUTG:WAIT 5
29550 VIL_MG_GN%=7:VIL_MG_X%=428:VIL_MG_Y%=242:GOSUB *VIL_MG_PUTG:WAIT 5
29560 VIL_MG_GN%=8:VIL_MG_X%=428:VIL_MG_Y%=242:GOSUB *VIL_MG_PUTG:WAIT 5
29570 VIL_MG_GN%=7:VIL_MG_X%=428:VIL_MG_Y%=242:GOSUB *VIL_MG_PUTG:WAIT 5
29580 VIL_MG_GN%=6:VIL_MG_X%=428:VIL_MG_Y%=242:GOSUB *VIL_MG_PUTG:WAIT 5
29590 VIL_MG_GN%=5:VIL_MG_X%=428:VIL_MG_Y%=242:GOSUB *VIL_MG_PUTG:WAIT 5
29600 T1=0
29610 ENDIF
29620 J=J+1:WEND
29630 NEXT
29640 CLS:PALETTE@:GOSUB *VIL_VWM_PALSET
29650 RETURN
29660 *APPLY_MAKU_DATA
29670 DATA 2,A,8,"こんにちは。特別出演(?)のまくらちゃんです "
29680 DATA 2,A,7,"VILの開発にはタッチしていないのですが、 "
29690 DATA 2,A,6,"なぜか説明役に駆り出されてしまいました。 "
29700 DATA 2,A,4,"……それはともかく、 "
29710 DATA 2,A,9,"ここではウィンドウマネージャとマルチグラフィックの"
29720 DATA 2,A,5,"連携例などを説明します。 "
29730 DATA 2,C,0,"……え? "
29740 DATA 2,A,6,"ごめんなさい、まだできてないみたいです。 "
29750 DATA 9,D,0,"[風ガ]し、締切が……ひぃいいい "
29760 DATA 2,A,8,"本当はウィンドウにアイコンを張りつける例とか、 "
29770 DATA 2,A,7,"背景に顔グラフィックがオーバラップする例とか、 "
29780 DATA 2,A,6,"いろいろ予定していたようなんですが…… "
29790 DATA 2,A,4,"ちなみにこの口パクアニメは、 "
29800 DATA 2,A,7,"マルチグラフィックパッケージで実現しています。 "
29810 DATA 2,A,3,"これも時間があれば、 "
29820 DATA 2,A,6,"もっといろんな演出をお見せできたのですが。 "
29830 DATA 10,D,0,"(……表情が変わらないよぉ、しくしく(;_;)) "